package one;
    import java.util.Scanner;

    public class test1  {
        public static int maxSubArray(int[] nums) {
            // 初始化两个变量，分别存储当前子数组的最大值和全局最大值
            int currentMax = nums[0];
            int globalMax = nums[0];

            // 从第二个元素开始遍历数组
            for (int i = 1; i < nums.length; i++) {
                // 计算当前子数组的最大和：要么包括当前元素，要么从当前元素重新开始
                currentMax = Math.max(nums[i], currentMax + nums[i]);

                // 更新全局最大值
                globalMax = Math.max(globalMax, currentMax);
            }

            return globalMax;
        }

        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);

            // 提示用户输入数组的大小
            System.out.print("请输入数组的长度: ");
            int n = scanner.nextInt();

            // 创建数组并提示用户输入数组的元素
            int[] nums = new int[n];
            System.out.println("请输入数组元素（用空格分隔）:");
            for (int i = 0; i < n; i++) {
                nums[i] = scanner.nextInt();
            }

            // 计算并输出最大子数组和
            int result = maxSubArray(nums);
            System.out.println("最大子数组和: " + result);

            scanner.close();
        }
    }

